<!DOCTYPE html>
<!-- 文档类型声明，使用HTML5规范 -->
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<!-- 使用Thymeleaf模板引擎，设置页面语言为中文 -->
<head>
    <!-- 页面头部区域 -->
    <th:block th:include="include :: header('新增部门')" />
    <!-- 引入公共头部资源，包括标题为"新增部门" -->
</head>
<body class="white-bg">
    <!-- 页面主体内容，设置背景为白色 -->
    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
        <!-- 内容容器，添加动画效果和内边距 -->
        <form class="form-horizontal m" id="form-dept-add">
            <!-- 表单区域，使用水平布局 -->
            <input id="treeId" name="parentId" type="hidden" th:value="${dept?.deptId}" />
            <!-- 隐藏输入框，用于存储上级部门ID -->

            <div class="form-group">
                <!-- 表单组：上级部门选择 -->
                <label class="col-sm-3 control-label is-required">上级部门：</label>
                <!-- 标签：必填项 -->
                <div class="col-sm-8">
                    <!-- 输入区域：占8列宽度 -->
                    <div class="input-group">
                        <!-- 输入组：包含文本框和按钮 -->
                        <input class="form-control" type="text" onclick="selectDeptTree()" id="treeName" readonly="true" th:value="${dept?.deptName}" required>
                        <!-- 只读文本框：显示选中的部门名称 -->
                        <span class="input-group-addon"><i class="fa fa-search"></i></span>
                        <!-- 搜索图标按钮 -->
                    </div>
                </div>
            </div>

            <div class="form-group">
                <!-- 表单组：部门名称输入 -->
                <label class="col-sm-3 control-label is-required">部门名称：</label>
                <!-- 标签：必填项 -->
                <div class="col-sm-8">
                    <input class="form-control" type="text" name="deptName" id="deptName" required>
                    <!-- 文本输入框：输入部门名称 -->
                </div>
            </div>

            <div class="form-group">
                <!-- 表单组：显示排序输入 -->
                <label class="col-sm-3 control-label is-required">显示排序：</label>
                <!-- 标签：必填项 -->
                <div class="col-sm-8">
                    <input class="form-control" type="text" name="orderNum" required>
                    <!-- 文本输入框：输入排序号 -->
                </div>
            </div>

            <div class="form-group">
                <!-- 表单组：负责人输入 -->
                <label class="col-sm-3 control-label">负责人：</label>
                <!-- 标签：可选 -->
                <div class="col-sm-8">
                    <input class="form-control" type="text" name="leader">
                    <!-- 文本输入框：输入负责人姓名 -->
                </div>
            </div>

            <div class="form-group">
                <!-- 表单组：联系电话输入 -->
                <label class="col-sm-3 control-label">联系电话：</label>
                <!-- 标签：可选 -->
                <div class="col-sm-8">
                    <input class="form-control" type="text" name="phone">
                    <!-- 文本输入框：输入联系电话 -->
                </div>
            </div>

            <div class="form-group">
                <!-- 表单组：邮箱输入 -->
                <label class="col-sm-3 control-label">邮箱：</label>
                <!-- 标签：可选 -->
                <div class="col-sm-8">
                    <input class="form-control" type="text" name="email">
                    <!-- 文本输入框：输入邮箱地址 -->
                </div>
            </div>

            <div class="form-group">
                <!-- 表单组：部门状态选择 -->
                <label class="col-sm-3 control-label">部门状态：</label>
                <!-- 标签：可选 -->
                <div class="col-sm-8">
                    <div class="radio-box" th:each="dict : ${@dict.getType('sys_normal_disable')}">
                        <!-- 单选框组：遍历状态字典 -->
                        <input type="radio" th:id="${dict.dictCode}" name="status" th:value="${dict.dictValue}" th:checked="${dict.default}">
                        <!-- 单选框：设置状态值 -->
                        <label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label>
                        <!-- 单选框标签：显示状态文本 -->
                    </div>
                </div>
            </div>
        </form>
    </div>

    <th:block th:include="include :: footer" />
    <!-- 引入公共底部资源 -->

    <script type="text/javascript">
        // JavaScript代码区域
        var prefix = ctx + "system/dept";
        // 定义请求前缀，用于API请求

        // 表单验证配置
        $("#form-dept-add").validate({
            onkeyup: false, // 失去焦点时验证
            rules:{
                deptName:{
                    // 部门名称验证规则
                    remote: {
                        url: prefix + "/checkDeptNameUnique", // 异步验证URL
                        type: "post", // 请求方式
                        dataType: "json", // 返回数据类型
                        data: {
                            "parentId": function() {
                                return $("input[name='parentId']").val(); // 获取上级部门ID
                            },
                            "deptName" : function() {
                                return $.common.trim($("#deptName").val()); // 获取部门名称并去除空格
                            }
                        }
                    }
                },
                orderNum:{
                    digits:true // 只能输入数字
                },
                email:{
                    email:true, // 必须是有效邮箱格式
                },
                phone:{
                    isPhone:true, // 必须是有效电话格式
                },
            },
            messages: {
                "deptName": {
                    remote: "部门已经存在" // 部门名称已存在提示
                }
            },
            focusCleanup: true // 获得焦点时清除错误提示
        });

        // 表单提交处理函数
        function submitHandler() {
            if ($.validate.form()) { // 验证通过后提交
                $.operate.save(prefix + "/add", $('#form-dept-add').serialize());
            }
        }

        // 部门树选择函数
        function selectDeptTree() {
            var treeId = $("#treeId").val();
            if ($.common.isEmpty(treeId)) {
                $.modal.alertWarning("请先添加用户所属的部门！");
                return;
            }
            var options = {
                title: '部门选择', // 弹窗标题
                width: "380", // 弹窗宽度
                url: prefix + "/selectDeptTree/" + treeId + "/0", // 弹窗内容URL
                callBack: doSubmit // 回调函数
            };
            $.modal.openOptions(options); // 打开弹窗
        }

        // 回调函数：处理选择的部门
        function doSubmit(index, layero){
            var body = $.modal.getChildFrame(index);
            $("#treeId").val(body.find('#treeId').val()); // 设置部门ID
            $("#treeName").val(body.find('#treeName').val()); // 设置部门名称
            $.modal.close(index); // 关闭弹窗
        }
    </script>
</body>
</html>
